/**
 * Created by
 */

/* 用户权限*/
export function isvalidUsername(str) {
  const valid_map = ['admin', 'editor']
  return valid_map.indexOf(str.trim()) >= 0
}

/* 合法uri*/
export function validateURL(textval) {
  const urlregex = /^(https?|ftp?|http):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return urlregex.test(textval)
}

/* 小写字母*/
export function validateLowerCase(str) {
  const reg = /^[a-z]+$/
  return reg.test(str)
}

/* 大写字母*/
export function validateUpperCase(str) {
  const reg = /^[A-Z]+$/
  return reg.test(str)
}

/* 大小写字母*/
export function validateAlphabets(str) {
  const reg = /^[A-Za-z]+$/
  return reg.test(str)
}

/**
 * validate email
 * @param email
 * @returns {boolean}
 */
export function validateEmail(email) {
  const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
  return re.test(email)
}

/* 手机号码*/
export function validatePhone(str) {
  const reg = /^[1][3,4,5,7,8,9][0-9]{9}$/
  return reg.test(str)
}

/* 验证非负整数（正整数 + 0）*/
export function validateNum(num) {
  const reg = /^\d+$/
  return reg.test(num)
}

/* 验证金额数*/
export function validateMoney(mon) {
  const reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/
  return reg.test(mon)
}

/* 验证身份证号 18位或者15位*/
export function validateIdCard(Id) {
  const reg = /^\d{15}|\d{18}$/
  return reg.test(Id)
}

/* 特殊字符验证*/
export function validateSpecial(str) {
  const reg = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~！@#￥……&*（）——|{}【】‘；：”“'。，、？]")
  return reg.test(str)
}

/* 汉字验证*/
export function validateCharacters(str) {
  const reg = /^[\u2E80-\u9FFF]+$/
  return reg.test(str)
}

/* 结束时间不能小于开始时间 传入的时间格式：yyyy-mm-dd hh:mm:ss
若未传入结束时间 则开始时间与当前时间对比*/
export function validateABTime(Atime, Btime) {
  const startTmp = Atime.replace(' ', ':').replace(/\:/g, '-').split('-')
  const sd = new Date(startTmp[0], startTmp[1], startTmp[2], startTmp[3], startTmp[4], startTmp[5])
  let ed
  if (Btime) {
    const endTmp = Btime.replace(' ', ':').replace(/\:/g, '-').split('-')
    ed = new Date(endTmp[0], endTmp[1], endTmp[2], endTmp[3], endTmp[4], endTmp[5])
  } else {
    ed = new Date()
  }
  return (sd.getTime() > ed.getTime())
}

/* 返回当前时间 @format yyyy-mm-dd || YYYY-MM-DD*/
export function validateRTime(format) {
  const myDate = new Date()
  const year = myDate.getFullYear()
  let month = myDate.getMonth() + 1
  let date = myDate.getDate()
  let hour = myDate.getHours()
  let min = myDate.getMinutes()
  let sec = myDate.getSeconds()
  if (month < 10) {
    month = '0' + month
  }
  if (date < 10) {
    date = '0' + date
  }
  if (hour < 10) {
    hour = '0' + hour
  }
  if (min < 10) {
    min = '0' + min
  }
  if (sec < 10) {
    sec = '0' + sec
  }
  if (format === 'yyyy-mm-dd' || format === 'YYYY-MM-DD') return (year + '-' + month + '-' + date)
  return (year + '-' + month + '-' + date + ' ' + hour + ':' + min + ':' + sec)
}
